package com.opennetexam.manager.utils;

import com.opennetexam.manager.exception.ComponentException;

/**
 * @author naicha
 * Created on 2017/11/7.
 */
public class PublicHelper {

    /**
     * 检验参数合法性，数值类型不能小于0，引用类型不能为null，否则抛出相应异常
     * @param arg 待检参数
     * @param argName 待检参数名称
     */
    public static void checkArgument(Object arg, String argName){
        Boolean canZero = false;
        if(arg == null){
            NullPointerException nullPointerException = new NullPointerException(argName);
            throw new ComponentException(String.format("参数 %s 为空引发异常。",argName),nullPointerException);
        }

        String type = arg.getClass().getName();
        if(type != null && !("").equals(type) && ("java.lang.Integer").equals(type)){
            if(!canZero){
                boolean flag = arg.equals(0) ? true : false;
                if(flag){
                    ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException = new ArrayIndexOutOfBoundsException(argName);
                    throw new ComponentException(String.format("参数 {0} 不在有效范围内引发异常。具体信息请查看系统日志。", argName), arrayIndexOutOfBoundsException);
                }
            }
        }

    }

}
